export interface ProblemDetail {
  problemId: number;
  problemType: number; // 1-单选，2-多选，3-填空
  subjectId: number; // 科目
  introduce: string; // 标签
  selectProblem: SelectProblemInfo; // 选择题内容
  blankfillingProblem: BlankfillingProblemInfo; // 填空题内容
  listenProblem: ListenProblemInfo; // 听力题内容
  wordBlankfillingProblem: WordBlankfillingProblemInfo; // 单词填空内容
  clozeProblem: ClozeProblemInfo; // 完形填空内容
  readingProblem: ReadingProblemInfo; // 阅读题内容
  listeningComprehensionProblem: ListeningComprehensionProblemInfo; // 听力理解内容
  explain: RichText;
}

export interface SmallProblemDetail {
  smallProblemId: number; // 题ID
  smallProblemType: number; // 题类型 1-单词填空， 2-完型填空，3-阅读题(单选)，4-阅读题（填空）5-听力理解(单选)，6-听力理解（填空）
  wordBlankfillingProblem: BlankfillingNoTitle; // 单词填空内容
  clozeProblem: SelectNoTitle; // 完型填空内容
  readingSelectProblem: SelectProblemInfo; // 阅读题单选内容
  readingBlankfillingProblem: BlankfillingProblemInfo; // 阅读题填空内容
  listeningCompreSelectProblem: SelectProblemInfo; // 听力理解单选内容
  listeningCompreBlankfillingProblem: BlankfillingProblemInfo; // 听力理解填空内容
}

export interface SelectProblemInfo {
  title: RichText[]; // 题干
  options: ProblemOption[]; // 题选项
  answer: string[]; // 答案，此处不填充，空
  explain: RichText[]; // 解析
}

export interface BlankfillingProblemInfo {
  blocks: Block[]; // 题内容（包括问题和填空）
  explain: RichText[]; // 解析
}

export interface ListenProblemInfo {
  audioURL: string; // 音频地址
  selectInfo: SelectProblemInfo; // 选择题
}

export interface WordBlankfillingProblemInfo {
  blocks: Block[]; // 富文本块
  smallProblems: SmallProblemDetail[]; // 小题
}

// BlankfillingNoTitle 没有题干的填空题
export interface BlankfillingNoTitle {
  answer: string; // 答案
  explain: RichText[]; // 题目解析
}

// ClozeProblemInfo 完型填空
export interface ClozeProblemInfo {
  blocks: Block[]; // 富文本块
  smallProblems: SmallProblemDetail[]; // 小题
}

// SelectNoTitle 没有题干的单选题
export interface SelectNoTitle {
  options: ProblemOption[]; // 选项
  answer: string; // 答案
  explain: RichText[]; // 题目解析
}

// ReadingProblemInfo 阅读题
export interface ReadingProblemInfo {
  blocks: RichText[]; // 阅读块
  smallProblems: SmallProblemDetail[]; // 小题
}

// ListeningComprehensionProblemInfo 听力理解题
export interface ListeningComprehensionProblemInfo {
  audioURL: string; // 音频地址
  duration: number; // 阅读时间
  smallProblems: SmallProblemDetail[]; // 小题
}

export interface Block {
  paragraphs: Paragraph[];
}

export interface Paragraph {
  type: number; // 文本类型 1-纯文本 2-图片链接 3-填空
  content: string; // 段落文本
  answers?: string[]; // 答案
}

export interface RichText {
  textType: number; // 文本类型 1-纯文本 2-图片链接 3-填空
  textStr: string; // 文本内容
}

export interface ProblemOption {
  optId: string; // 选项ID
  optText: RichText[]; // 选项文本
}

export interface ProblemAnswer {
  problemId: number; // 题ID
  withSmall: boolean; // 是否有小题
  answer: string[]; // 答案 withSmall为false有效
  smallAnswers: SmallProblemAnswer[]; // 小题答案 withSmall为true时有效
}

// SmallProblemAnswer 小题答案
export interface SmallProblemAnswer {
  smallProblemId: number; // 小题ID
  answer: string[]; // 小题答案
}

// ProblemResult 判题结果
export interface ProblemResult {
  problemId: number; // 题ID
  withSmall: boolean; // 是否有小题
  isCorrect: boolean; // 题是否正确,withSmall为false时有效
  results: SmallProblemResult[]; // 小题判题结果,withSmall为true时有效
  addGoldCoinNum: number;
}

// SmallProblemResult 小题判题结果
export interface SmallProblemResult {
  smallProblemId: number; // 小题ID
  isCorrect: boolean; // 小题是否正确
}
